<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=10" />
    <title>对象 TGPDFPlugInCtrl 的 ATL 测试页</title>
    <script language="Javascript" src="../../js/jquery/jquery.min.js"></script>
    <script language="Javascript" src="../../js/json2.js"></script>
    <script type="text/javascript">
        //服务地址
        var serviceURL=window.parent.getServerUri();
        var isSaveServer = false;// 是否已保存服务器标识
        var SignContext;
     	// 杭州天谷电子印章生成存放文件的临时文件夹
        var tgTempDir="C:\\WINDOWS\\temp\\tg";
     	// 版式文件SEP临时名称
        var tempFileName=new Date().getTime();
     	var sealNum = 0;
     	var actName="weekRecordAction";
        /**
         * 判断值是否为空
         */
        function isEmpty(val, bool) {
        	if(val == null)
        		return true;
        	if(val == undefined)
        		return true;
        	if(typeof(val) == "undefined")
        		return true;
        	if(val=="undefined")
        		return true;
        	if(Object.prototype.toString.apply(val) === "[object Array]" && val.length==0)
        		return true;
        	if(typeof(val) === "string" && val=="")
        		return true;
        	if(typeof(bool)!="undefined"){
        		return !bool ? val === "" : false;
        	}
        	return false;
        }

        function load() {
            TGPDFPlugIn = getPluginObjcet("TGPDFPlugIn");
            TGGovDocumentCtrl = getPluginObjcet("TGGovDocumentCtrl");
            attach_event();
            $("#isSeal",window.parent.document).val("0");
            // 获取要盖章pdf文件路径
            var gzWordFilePath = parent.getSrcFileUri();
            var gzPdfFilePath = parent.getPdfFile();
            
            var canSealPdf = $("#canSealPdfId",window.parent.document).val();
            //alert(canSealPdf);
            if(typeof(canSealPdf)=="undefined" || canSealPdf==""){
            	
            	var editorTypeTemp = "OFFICE";
            	var dataIdTemp = $("#weekRecord\\.lwDocDataId",window.parent.document).val().toUpperCase()
            	if(editorTypeTemp=="PDF"){
            		var url = serviceURL+"/servlet/docFileServlet?dataId="+dataIdTemp+"&dataTable=WEEK_RECORF&type=ZW_PDF";
            		if(dataIdTemp==""){
            			alert("请先保存正文！");
            			return false;
            		}else{
            			OpenWebPdfFile(url);
            		}
            	}else{
            		// 转换本地word为pdf
                	//alert(gzWordFilePath);
        		   	if(ConvertToPDF(gzWordFilePath,gzPdfFilePath)==0){
        		   		//alert(gzPdfFilePath);
        		   		OnLoadPDF(gzPdfFilePath);
        		   	}else{
        		   		alert("客户端转换word文件为pdf失败，请检查当前系统的office版本是否为2010！");
        		   		return false;
        		   	}
            	}
            	
            }else{
            	OpenWebFile(canSealPdf);
            }
            $("#isToSeal",window.parent.document).val("1");
            var Res = TGPDFPlugIn.DisplayToolBar(0, 0);
            ShowResultMessage("DisplayToolBar", Res);
        }
        
        function getPluginObjcet(objname) {
            if (!isIEBrowser()) {
                if (document.embeds && document.embeds[objname])
                    return document.embeds[objname];
            }
            else {
                return document.getElementById(objname);
            }
        }

        function isIEBrowser() {
            var isAtLeastIE11 = !!(navigator.userAgent.match(/Trident/) && !navigator.userAgent.match(/MSIE/));

            if (isAtLeastIE11) {
                return true;
            }

            return (navigator.appName.indexOf("Microsoft Internet") != -1);
        }
        
        function attach_event() {
            try {
                if (!isIEBrowser()) {
                    TGPDFPlugIn.attachEvent("OnEventFinish", "jsOnEventFinish");
                }
                else {
                    TGPDFPlugIn.attachEvent("OnEventFinish", jsOnEventFinish);
                }
            }
            catch (e) {
                return false;
            }
            return true;
        }
        
        function jsOnEventFinish(eventID, errorCode, result)
        {
            switch(eventID)
            {
                case 11201:
                    //ShowResultMessage("获取当前文件路径" + errorCode, result)
                    break;
                case 11202:
					$("#caseFilePath").val(result);
                    break;
                case 11203:
                    //ShowResultMessage("文档总页数" + errorCode, result)
                    break;
                case 11204:
                    //ShowResultMessage("文档当前页码" + errorCode, result)
                    break;
                case 11205:
                	//$("#sealCount").val(result);
                    break;
                case 11206:
                    //ShowResultMessage("签章信息字符串形式" + errorCode, result)
                    break;
                case 11207:
                    //ShowResultMessage("签章信息文件路径" + errorCode, result)
                    break;
                case 11300:
                    SignContext = errorCode;
                    //ShowResultMessage("签名环境", errorCode)
                    break;
                case 12600:
                    //ShowResultMessage("上传文件" + errorCode, result)
                    break;
                case 12700:
                    //ShowResultMessage("转换文件" + errorCode, result)
                    break;
                default:
                    //ShowResultMessage("结果" + errorCode, result)
                    break;
            }
        }
        
        /**
         * 隐藏/显示工具栏
         * @param lDisplayFlag 操作标识 操作标识 :0 -隐藏工具栏 ,1 -显示工具栏  ,2 -隐藏按钮,3 显示按 钮, 4-禁用按钮 ,5 -启用按钮 , 6 -隐藏签章弹出菜单按钮 ,7 显示签章弹出菜单按钮
         * @param buttonID 按钮ID
         * @return 0:成功  其他值失败（错误码）
         */
        function playToolBar(lDisplayFlag, buttonID){
        	var res = TGPDFPlugIn.DisplayToolBar(lDisplayFlag,buttonID);
        	//ShowResultMessagePlugIn(res);
        }
        
        /**
         * 用户登录
         * @param userName 用户名
         * @param password 密码
         * @return 0:成功  其他值失败（错误码）
         */
        function LogIn(userName,password){
        	
        	var res = TGGovDocumentCtrl.LogIn("", "",1);
            if(res==0){
            	//alert("用户登录成功！");
            }else{
            	alert("用户登录失败！(错误码："+res+",错误原因："+TGGovDocumentCtrl.GetErrorMsg(res)+")");
            	return false;
            }
        }

        
        //加载本地PDF文档
        function OnLoadPDF(sourcePath) {
            var Res = TGPDFPlugIn.LoadPDF(sourcePath);
            //ShowResultMessage("OnLoadPDF", Res);
        }
        
      	//加载网络PDF文档
        function OpenWebFile(canSealPdf) {
      		//alert(canSealPdf);
            var Res = TGPDFPlugIn.LoadPDF(serviceURL+"/servlet/docFileServlet?id="+canSealPdf);
            playToolBar(1,419);
            //ShowResultMessage("OpenWebFile", Res);
        }
      	
      	//加载网络PDF文档
        function OpenWebPdfFile(url) {
      		//alert(canSealPdf);
            var Res = TGPDFPlugIn.LoadPDF(url);
            playToolBar(1,419);
            //ShowResultMessage("OpenWebFile", Res);
        }

        //初始化签名环境
        function InitSign() {
            var Res = TGPDFPlugIn.InitSign(SignContext);
            //ShowResultMessage("InitSign", Res);
        }

        //设置文档视图缩放比例
        function SetFileZoom() {
            var Res = TGPDFPlugIn.SetDocViewZoom(document.form1.fileZoom.value);
            ShowResultMessage("SetFileZoom", Res);
        }

        //跳转到指定页码
        function GotoPage() {
            var Res = TGPDFPlugIn.GotoPage(document.form1.gotoPage.value);
            //ShowResultMessage("GotoPage", Res);
        }

        //跳转到指定文本
        function GotoText() {
            var Res = TGPDFPlugIn.GotoText(document.form1.gotoText.value, 1);
            //ShowResultMessage("GotoText", Res);
        }

        //跳转到书签
        function GotoBookMark() {
            var Res = TGPDFPlugIn.GotoBookMark(document.form1.gotoBookMark.value);
            //ShowResultMessage("GotoBookMark", Res);
        }

        //打印控件中当前文件
        function PrintFile() {
            var Res = TGPDFPlugIn.PrintFile(document.form1.printList.value);
            //ShowResultMessage("PrintFile", Res);
        }

        /**
         * 根据命令调用中间件操作
         */
        function ControlPDF(value) {
            var res = TGPDFPlugIn.ControlPDF(value);
            isSaveServer = false;// 重置上传服务器标识
        }

        function changeControlPDFList() {
            TGPDFPlugIn.ControlPDF(document.form1.controlPDFList.value);
        }

        //设置窗口位置
        function ResizePlugin() {
            var Res = TGPDFPlugIn.ResizePlugin(840, 10, 1640, 610);
            //ShowResultMessage("ResizePlugin", Res);
        }
        /**
         * 上传盖章文件到服务器
         * @param serverUrl 服务器地址
         * @param filePath  文件地址
         * @param fileForm  文件参数名称（对应后台action）
         * @param uploadParameters 其他参数
         */
        function UploadFileToServer(serverUrl,filePath,fileForm,uploadParameters) {
			//var outInfo;
            //var outInfoLen;
            //TGPDFPlugIn.GetCurrentDocInfo(2, outInfo, outInfoLen);
            //alert(serverUrl+"    "+filePath +"   "+fileForm+"    "+uploadParameters);
            var res = TGPDFPlugIn.UploadFileToServer(serverUrl, filePath, fileForm,uploadParameters);
           // alert(res);
            ShowResultMessagePlugIn("UploadFileToServer", res);
            return res;
        }
        
        /**
		 * 客户端转换word为PDF，调用杭州天谷接口
		 */
		function ConvertToPDF(sourcePath,targetPath) {
		    return TGPDFPlugIn.ConvertToPDF(sourcePath, targetPath);
		}
        
        /**
         * 设置收文单位
         */
        function SetReceverInfo(){
        	var code = $("#code",window.parent.document).val();
        	var lwCode = $("#lwCode",window.parent.document).val()
        	if(typeof(lwCode)!="string"){
        		alert("发文单位组织机构代码为空，盖章失败！");
        		return false;
        	}else if(lwCode==""){
        		alert("发文单位组织机构代码为空，盖章失败！");
        		return false;
        	}
        	var codeList = $("#codeList",window.parent.document).val();	
   			if(typeof(codeList)=="string"){
   				if(codeList.length!=0){
   					var s=codeList.split(',');
   				}
   			}
        	window.parent.openWaitDialog("正在上传盖章文件，请您稍候.....");
        	
    		var jmCertificate = "";
    		var lContext = 0;
    		// 循环设置收文单位开始
    		LogIn("",""); // 1、先进行用户登录操作，参数传空，即让客户选择相应的登录证书
    		if(typeof(code)=="string"){
    			if(code!=""){
    				// 初始化设置收文单位
    	   			lContext = SetReceverInfo_Init();
    	   			// 设置收文单位更新操作（默认打印份数3份）
    				SetReceverInfo_Update(lContext,$("#code",window.parent.document).val(),1,3);
    	   			
    	   			// 完成设置收文单位，获取加密证书
    	   			SetReceverInfo_Finish(lContext);
    	   			
            	}	
        	}
   			
   			// 初始化设置收文单位
   			lContext = SetReceverInfo_Init();
   			// 设置收文单位更新操作（默认打印份数3份）
			SetReceverInfo_Update(lContext,$("#lwCode",window.parent.document).val(),1,3);
   			
   			// 完成设置收文单位，获取加密证书
   			SetReceverInfo_Finish(lContext);
   			
   			if(typeof(codeList)=="string"){
   				if(codeList.length!=0){
   					var s=codeList.split(',');
   	   	   			for(var i = 0;i<s.length;i++){
   	   	   			// 初始化设置收文单位
   	   	   	   			lContext = SetReceverInfo_Init();
   	   	   	   			// 设置收文单位更新操作（默认打印份数3份）
   	   	   				SetReceverInfo_Update(lContext,s[i],1,3);
   	   	   	   			
   	   	   	   			// 完成设置收文单位，获取加密证书
   	   	   	   			SetReceverInfo_Finish(lContext);
   	   	   			}
   				}
   			}
   			
    	      // 设置收文单位后进行加密保存
          		var result = GovDocEncrypt();
          		if(result!=0){
          			// 关闭等待页面
                  	window.parent.closeWaitDialog();
          			alert("上传服务器失败！");
          			return false;
          		}
          		
          		// 关闭等待页面
              	window.parent.closeWaitDialog();
          		// 上传成功后，进行提醒
          		alert("提交成功！");
          		 $("#isSeal",window.parent.document).val("1");
          		$("#isLoad",window.parent.document).val("1");
        		$("#isHasSeal",window.parent.document).val("0");
        		window.parent.document.forms[0].action = actName + '!modify.shtml';
        		window.parent.document.forms[0].submit();
				//$("#isHasSeal",window.parent.document).val("true");
          		//parent.location.reload();
    	            
        	
        }
        
       
        
        /**
         * 公文加密操作(专供父页面调整发布对象时调用)
         * @param encryptSrcFile  需加密的PDF源文件路径
         * @param encryptDespFile 加密后的文件路径
         * @return 0:成功  其他值失败（错误码）
         */
        function GovDocEncryptByModifyOrg(){
        	
        	// 先获取文档信息
        	GetCurrentDocInfo();
        	var sourceFilePath = $("#caseFilePath").val();
        	var targetFilePath = tgTempDir+"\\"+tempFileName+".tgw";
        	// 加密操作
            var res = TGGovDocumentCtrl.GovDocEncrypt(sourceFilePath, targetFilePath);
          
            // 上传操作
            // 第一步上传版式文件tgw
            var uploadObj=getUploadBasicInfo();
            //var wfEntityId=$("#wfEntity\\.id").val();//流程id
        	 var formDataId=$("#weekRecord\\.lwDocDataId",window.parent.document).val();//流程对应表单数据id
        	 var docNum=$("#f_wenhao",window.parent.document).val();//机关代字文号

        	 if(docNum==undefined){
	       		docNum = "";
	       	 }

        	 var title=$("#divForm input[txtreservedomain='title']",window.parent.document).val();
        	 uploadObj.file1FileName = tempFileName+".tgw";
        	 
        	 
        	 var uploadUrl=serviceURL+"/uploadAttachmentTgAction!uploadByTgForRecord.shtml?";
        	 //组装上传url
        	 //alert(formDataId+","+docNum+","+title);
			 uploadObj.formDataId=formDataId;
        	 uploadObj.docNum=docNum;
        	 uploadObj.docTitle=title;
        	 uploadObj.fileType = "ZW_BS";
        	 uploadObj.formId = "WEEK_RECORD";
        	 uploadObj.uploadPerson = $("#cur_userId",window.parent.document).val();
			 var toStr = JSON.stringify(uploadObj);
			 // 上传天谷版式文件
			 var res = UploadFileToServer(uploadUrl,targetFilePath,"file1",toStr);
			 if(res!=0){
				 return res;
			 }
			 
			 return 0;
			 
        }
        
        /**
         * 公文加密操作
         * @param encryptSrcFile  需加密的PDF源文件路径
         * @param encryptDespFile 加密后的文件路径
         * @return 0:成功  其他值失败（错误码）
         */
        function GovDocEncrypt() {
        	// 先获取文档信息
        	GetCurrentDocInfo();
        	var sourceFilePath = $("#caseFilePath").val();
        	var targetFilePath = tgTempDir+"\\"+tempFileName+".tgw";
        	var targetFileTmhePath  = tgTempDir+"\\"+tempFileName+"tmh.pdf";
        	//alert(sourceFilePath);
        	//alert(targetFilePath);
        	//alert(targetFileTmhePath);
        	//var targetFileTmhoPath  = tgTempDir+"\\"+tempFileName+"tmh.pdf";
        	// 加密操作
            var res = TGGovDocumentCtrl.GovDocEncrypt(sourceFilePath, targetFilePath);
            //ShowResultMessageDocument("GovDocEncrypt", res);
            // 解密操作
            DecodeDocument(targetFilePath,targetFileTmhePath);
            // 上传操作
            // 第一步上传版式文件tgw
            var uploadObj=getUploadBasicInfo();
            
        	 var title=$("#weekRecord\\.title",window.parent.document).val();
        	 uploadObj.file1FileName = tempFileName+".tgw";
        	 
        	 
        	 var uploadUrl=serviceURL+"/uploadAttachmentTgForRecordAction!uploadByTgForRecord.shtml?";
        	 //组装上传url
        	 //alert(formDataId+","+docNum+","+title);
			// uploadObj.formDataId=formDataId;
        	 //uploadObj.docNum=docNum;
        	 uploadObj.docTitle=title;
        	 uploadObj.fileType = "ZW_BS";
        	 uploadObj.formId = "WEEK_RECORD";
        	 uploadObj.uploadPerson = $("#cur_userId",window.parent.document).val();
			 var toStr = JSON.stringify(uploadObj);
			 //alert(uploadUrl+"   "+toStr);
			 // 上传天谷版式文件
			 var res = UploadFileToServer(uploadUrl,targetFilePath,"file1",toStr);
			 //alert("ZW_BS(res):"+res);
			 if(res!=0){
				 //alert("上传服务器失败！");
				 return res;
			 }
			 // 上传天谷待盖章文件
			 uploadObj.fileType = "ZW_WAIT_SEALAGAIN";
			 uploadObj.file1FileName = tempFileName+"hot.pdf";
			 toStr = JSON.stringify(uploadObj);
			 var res = UploadFileToServer(uploadUrl,sourceFilePath,"file1",toStr);
			 //alert("ZW_WAIT_SEALAGAIN(res):"+res);
			 if(res!=0){
				 //alert("上传服务器失败！");
				 return res;
			 }
			 // 上传天谷脱密文件
			 uploadObj.fileType = "ZW_BS_TM_ATT";
			 uploadObj.file1FileName = tempFileName+"het.pdf";
			 toStr = JSON.stringify(uploadObj);
			 var res = UploadFileToServer(uploadUrl,targetFileTmhePath,"file1",toStr);
			 //alert("ZW_BS_TM(res):"+res);
			 if(res!=0){
				 //alert("上传服务器失败！");
				 return res;
			 }
			 
			 return 0;
        	
        }
        
        /**获得组装基本上传信息的对象**/
        function getUploadBasicInfo(){
        	
        	var docId=$("#weekRecord\\.lwDocDataId",window.parent.document).val();
        	var basic={
        		docId:docId
        	};
        	return basic;
        }
        
        /**
         * 公文解密操作
         * @param decryptSrcFile  需解密的PDF源文件路径
         * @param decryptDespFile 解密后的文件路径
         * @return 0:成功  其他值失败（错误码）
         */
        function DecodeDocument(decryptSrcFile,decryptDespFile) {
            var res = TGPDFPlugIn.DecodeDocument(decryptSrcFile, decryptDespFile, 0);
            ShowResultMessagePlugIn("DecodeDocument", res);
        }
        
        /**
         * 获取文档信息
         * @param docInfoID  需要获取信息ID（1当前文档路径，2 文档缓存路径，3 文档总 页数，4文档当前页码，5签章个数，6签章信息字符串形式，7签章信息 文件形式，输出保存签章信息的文件路径）
         * @param pDocInfo 要获取的文档信息 
         * @param plDocInfoLen 文档信息长度
         * @return 0:成功  其他值失败（错误码）
         */
        function GetCurrentDocInfo(docInfoID,pDocInfo,plDocInfoLen){
        	var outInfo;
            var outInfoLen;
            var res = TGPDFPlugIn.GetCurrentDocInfo(2, outInfo, outInfoLen);
            if(res==0){
            	//alert("获取成功！");
            }else{
            	
            	// 关闭等待页面
            	window.parent.closeWaitDialog();
            	alert("获取文档信息失败！(错误码："+res+",错误原因："+TGPDFPlugIn.GetErrorMsg(res)+")");
            	return false;
            }
            //ShowResultMessage("GetCurrentFileInfo", Res);
        }
        
        /**
         * 设置收文单位（初始化操作）
         * 返回值说明：0 失败；其他成功【此返回值作为参数传递给update方法】
         */
        function SetReceverInfo_Init() {
            var lContext = TGGovDocumentCtrl.SetReceverInfo_Init();
            if(lContext==0){
            	// 关闭等待页面
            	window.parent.closeWaitDialog();
            	alert("设置收文单位初始化时失败！");
            	return false;
            }
            return lContext;
        }

        /**
         * 设置收文单位（设置操作）
         * @param lContext Init返回的值
         * @param jgCode 组织机构代码号
         * @param receverType 收文单位信息类型 :1 部门编号 ,2 用户工号 ,3 账号 ID
         * @param printNum 可打印份数
         * @return 0:成功  其他值失败（错误码）
         */
        function SetReceverInfo_Update(lContext,jgCode,receverType,printNum) {
            //alert(jgCode);
            var res = TGGovDocumentCtrl.SetReceverInfo_Update(lContext, jgCode, receverType, printNum);
            if(res==0){
            	//alert("设置收文单位成功！");
            }else{
            	// 关闭等待页面
            	window.parent.closeWaitDialog();
            	alert("设置收文单位失败！(错误码："+res+",错误原因："+TGGovDocumentCtrl.GetErrorMsg(res)+")");
            	return false;
            }
        }

        /**
         * 设置收文单位（完成返回加密证书）
         * @param lContext Init返回值
         * @return json格式字符串
         */
        function SetReceverInfo_Finish(lContext) {
            var res = TGGovDocumentCtrl.SetReceverInfo_Finish(lContext);
            ShowResultMessageDocument("SetReceverInfo_Finish", res);
            var backResult = eval('(' + res + ')');
            var receverResResult = eval(backResult.receverResArr);
            //alert(receverResResult[0].errCode);
        }
        
        function ShowResultMessagePlugIn(msg, result) {
            var resultMsg = "";
            try{
                resultMsg = TGPDFPlugIn.GetErrorMsg(result);
            }catch(e){

            }
            document.form1.resultMsg.value = msg + ":" + result.toString() + resultMsg;
        }
        
        function ShowResultMessageDocument(msg, result) {
            var resultMsg = "";
            try{
                resultMsg = TGGovDocumentCtrl.GetErrorMsg(result);
            }catch(e){

            }
            document.form1.resultMsg.value = msg + ":" + result.toString() + resultMsg;
        }
        
    </script>
</head>
<body onload="load();">
    <form name="form1" id="tgForm">
    	<input type="hidden" id="caseFilePath" name="caseFilePath" />
    	<input type="hidden" id="sealCount" name="sealCount" />
    	<table>
    		<tr>
    			<td>
    				<input "font-size:15px" type="button" value="盖章" onClick="ControlPDF(801);"/>
    			</td>
    			<td>
    				<input "font-size:15px" type="button" value="提交" onClick="SetReceverInfo();"  />
    			</td>
    			<td>
    				<input type="text" value="" id="resultMsg" name="resultMsg" style="width: 500px;"  />
    			</td>
    		</tr>
    	</table>
    	<!-- 加载pdf和盖章控件  -->
        <object id="TGPDFPlugIn" classid="clsid:04DDDFAA-0AC0-4D47-9315-9F442F65D403" width="100%" height="600">
            <embed name="TGPDFPlugIn" type="application/nptseal-TGPDFPlugIn" width="100%" height="600"></embed>
        </object>
        <!-- 设置收文单位和加密控件  -->
        <object id="TGGovDocumentCtrl" name="TGGovDocumentCtrl" classid="CLSID:DBA9A5F0-586D-48C7-92E7-5F0A7C749E0E" width="0" height="0">
	        <embed name="TGGovDocumentCtrl" width="0" height="0"></embed>
	    </object>
    </form>
</body>
</html>
